.tr ~-
.TH DEMANGLE 1 "" "" HP-UX
.ad b
.SH NAME
demangle \- demangle names throughout an a.out file (HP-UX version)
.SH SYNOPSIS
.B
demangle
.I file
.SH DESCRIPTION
.I Demangle
changes C++ mangled names to ``human-readable'' names in HP-UX a.out files.
This permits tools such as symbolic debuggers and profilers to be used
more easily.
.PP
.I Demangle
overwrites the a.out file's symbol table.
Names of local variables are mapped back to their original spellings.
Names of data members and nested classes are also mapped back
to their original spellings.
The demangled names of data members and nested classes do
not include qualification, whereas member functions are mapped to
.IR Classname__function .
If
.IR Classname
is a nested class name, then occurrences of
.IR ::
in the qualified name are mapped to
.IR __ .
.PP
Each demangled name is written in place in the a.out over the mangled name,
so care must be taken that the demangled name is no longer than the mangled one.
Toward that end,
.IR "`operator'"
is elided from the names of operator functions and conversion functions.
Also, the names of constructors and destructor of a class
.IR Classname
are demangled to Classname____ct and Classname____dt, respectively.
In those rare cases where the demangled name is still longer
than the mangled name, e.g.,
.IR "Classname::operator unsigned short" ,
a message is printed to
.IR stderr
and the name is not demangled.
.SH FILES
.ta 20
/tmp/dx??????	temporary file
.SH AUTHOR
Dennis Mancl
.SH BUGS
Trouble arises for overloaded functions: they are mapped
to the same name, so a symbolic debugger may not be able to distinguish them.
Overloaded operator functions may also cause difficulty, because
the name mapping produces a name with the operation symbol in it
(such as
.IR "Classname__+" ).
Some symbolic debuggers can't handle identifiers with these special symbols
in them.
